﻿// 1102 HAOI2008, 硬币购物.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

/*
http://oj.daimayuan.top/course/22/problem/1180

共有 4种硬币。面值分别为 c1,c2,c3,c4。
某人去商店买东西，去了 n次，对于每次购买，他带了 di枚 i种硬币，想购买 s的价值的东西。
请问每次有多少种付款方法。

输入格式
输入的第一行是五个整数，分别代表 c1,c2,c3,c4,n。
接下来 n行，每行有五个整数，描述一次购买， d1,d2,d3,d4,s。
对于 100%的数据，保证 1≤ci,di,s≤105，1≤n≤1000。

输出格式
对于每次购买，输出一行一个整数代表答案。

样例输入1
1 2 5 10 2
3 2 3 1 10
1000 2 2 2 900
样例输出1
4
27
*/

typedef long long ll;
const ll mod = 1000000007;
const int M = 100000;
int n, m, b[20], c[20], q, s;
ll dp[M + 10], ans;

void dfs(int d, int sgn, ll sum) {
	if (d == 4) {
		if (sum > s) return;
		ans += sgn * dp[s - sum];
	}
	else {
		dfs(d + 1, sgn, sum);
		dfs(d + 1, -sgn, sum + (ll)(b[d] + 1)* c[d]);
	}
}

 
int main()
{
	for (int i = 0; i < 4; i++)
		scanf("%d",&c[i]);
	scanf("%d",&q);
	dp[0] = 1;
	for (int i = 0; i < 4; i++) {
		for (int j = c[i]; j <= M; j++) {
			dp[j] += dp[j - c[i]];
		}
	}

	for (int j = 0; j < q; j++) {
		for (int i = 0; i < 4; i++) {
			scanf("%d",&b[i]);
		}
		scanf("%d",&s);
		ans = 0;
		dfs(0, 1, 0);
		printf("%lld\n", ans);
	}

	return 0;
}

 